namespace C4F.DevKit.Bluetooth
{
    namespace ServiceAndDeviceDiscovery
    {
        #region Using Directives
        using System;
        using System.Collections.Generic;
        using System.Text;
        using Resources;
        #endregion

        /// <summary>
        /// Defines properties that return the service class id i.e. type of the 
        /// specified service
        /// </summary>
        [Serializable]
        public class ServiceType
        {
            #region Private Members

            /// <summary>
            /// Represents the Guid of the service
            /// </summary>
            private Guid servGuid;

            /// <summary>
            /// Represents the description of the service.
            /// </summary>
            private string desc;

            #endregion

            #region Constructor

            /// <summary>
            /// Initializes the type of the service
            /// </summary>
            /// <param name="serviceGuid">Represents the Guid of the service</param>
            /// <param name="description">Represents the description of the service.
            /// </param>            
            internal ServiceType(Guid serviceGuid, string description)
            {                
                this.servGuid = serviceGuid;
                this.desc = description;
            }

            #endregion

            #region Public Functions

            /// <summary>
            ///An override to the ToString method of base class.
            ///Converts guid associated with ServiceType to string format.
            /// </summary>
            /// <returns>Returns the description of the service type</returns>
            public override string ToString()
            {

                return this.desc;
            }

            /// <summary>
            /// Equals method for service Type for comparing two service type 
            /// objects.
            /// </summary>
            /// <param name="obj">Object to be compared</param>
            /// <returns>Returns true if comparison succeeds else returns false.
            /// </returns>
            public override bool Equals(object obj)
            {
                if (obj == null)
                {
                    return false;
                }

                ServiceType serviceTypeObject = obj as ServiceType;
                if ((object)serviceTypeObject == null)
                {
                    return false;
                }

                return (serviceTypeObject.servGuid == this.servGuid);


            }

            /// <summary>
            /// Override for GetHashcode method.
            /// </summary>
            /// <returns>A hash code for the current object.</returns>
            public override int GetHashCode()
            {
                return base.GetHashCode();
            }

            /// <summary>
            /// Equals method for service Type for comparing two service type
            /// objects.
            /// </summary>
            /// <param name="serviceType">ServiceType Object to be compared.
            /// </param>
            /// <returns>Returns true if comparison succeeds else returns false.
            /// </returns>
            public bool Equals(ServiceType serviceType)
            {
                if (serviceType == null)
                {
                    return false;
                }
                // Return true if the fields match:
                return (this.servGuid == serviceType.servGuid);
            }

            /// <summary>
            /// Operator overload for == operator for comparing two service type
            /// objects.
            /// </summary>
            /// <param name="serviceType1">ServiceType Object to be compared.
            /// </param>
            /// <param name="serviceType2">ServiceType Object to be compared.
            /// </param>
            /// <returns>Returns true if comparison succeeds else returns false.
            /// </returns>
            public static bool operator ==(ServiceType serviceType1,
                                           ServiceType serviceType2)
            {
                // If both are null, or both are same instance, return true.
                if (System.Object.ReferenceEquals(serviceType1, serviceType2))
                {
                    return true;
                }

                // If one is null, but not both, return false.
                if (((object)serviceType1 == null) ||
                    ((object)serviceType2 == null))
                {
                    return false;
                }

                // Return true if the fields match:
                return (serviceType1.servGuid == serviceType2.servGuid);
            }

            /// <summary>
            /// Operator overload for != operatot for comparing two service type
            /// objects.
            /// </summary>
            /// <param name="serviceType1">ServiceType Object to be compared.
            /// </param>
            /// <param name="serviceType2">ServiceType Object to be compared.
            /// </param>
            /// <returns>Returns true if the object values dont compare else 
            /// returns false.</returns>
            public static bool operator !=(ServiceType serviceType1,
                                           ServiceType serviceType2)
            {
                return !((object)serviceType1 == (object)serviceType2);
            }


            #endregion

            #region Public Properties

            /// <summary>
            /// Gets the guid of the service.
            /// </summary>        
            public Guid ServiceGuid
            {
                get
                {
                    return this.servGuid;
                }
            }

            /// <summary>
            /// Gets the description of the service.
            /// </summary>        
            public string Description
            {
                get
                {
                    return this.desc;
                }
            }

            /// <summary>
            /// Get Service Type for AdvancedAudioDistribution. 
            /// </summary>
            public static ServiceType AdvancedAudioDistribution
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x110d, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AdvAudioDist);
                }
            }

            /// <summary>
            /// Get Service Type for Audio_Video. 
            /// </summary>
            public static ServiceType Audio_Video
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x112c, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AudioVideo);
                }
            }

            /// <summary>
            /// Get Service Type for AudioSink. 
            /// </summary>
            public static ServiceType AudioSink
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x110b, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AudioSink);
                }
            }

            /// <summary>
            /// Get Service Type for AudioSource.
            /// </summary>
            public static ServiceType AudioSource
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x110a, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AudioSource);
                }
            }

            /// <summary>
            /// Get Service Type for AVCTP.
            /// </summary>
            public static ServiceType AVCTP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x17, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AVCTP);
                }
            }

            /// <summary>
            /// Get Service Type for AVDTP.
            /// </summary>
            public static ServiceType AVDTP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x19, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AVDTP);
                }
            }

            /// <summary>
            /// Get Service Type for AVRemoteControl.
            /// </summary>
            public static ServiceType AVRemoteControl
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x110e, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AVRemoteControl);
                }
            }

            /// <summary>
            /// Get Service Type for AVRemoteControlTarget.
            /// </summary>
            public static ServiceType AVRemoteControlTarget
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x110c, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.AVRemoteControlTarget);
                }
            }

            /// <summary>
            /// Get Service Type for BasicPrinting.
            /// </summary>
            public static ServiceType BasicPrinting
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1122, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.BasicPrinting);
                }
            }

            /// <summary>
            /// Get Service Type for BNEP.
            /// </summary>
            public static ServiceType BNEP
            {
                get
                {
                    return new ServiceType(
                     new Guid(15, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                    SDPMessages.BNEP);
                }
            }

            /// <summary>
            /// Get Service Type for BrowseGroupDescriptor.
            /// </summary>
            public static ServiceType BrowseGroupDescriptor
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1001, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                    SDPMessages.BrowseGroupDescriptor);
                }
            }

            /// <summary>
            /// Get Service Type for CMTP.
            /// </summary>
            public static ServiceType CMTP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1b, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.CMTP);
                }
            }

            /// <summary>
            /// Get Service Type for Common_ISDN_Access.
            /// </summary>
            public static ServiceType Common_ISDN_Access
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1128, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.CommonISDNAccess);
                }
            }

            /// <summary>
            /// Get Service Type for CordlessTelephony.
            /// </summary>
            public static ServiceType CordlessTelephony
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1109, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.CordlessTelephony);
                }
            }

            /// <summary>
            /// Get Service Type for DialupNetworking.
            /// </summary>
            public static ServiceType DialupNetworking
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1103, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.DialupNetworking);
                }
            }

            /// <summary>
            /// Get Service Type for DirectPrinting.
            /// </summary>
            public static ServiceType DirectPrinting
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1118, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.DirectPrinting);
                }
            }

            /// <summary>
            /// Get Service Type for DirectPrintingReferenceObjectsService.
            /// </summary>
            public static ServiceType DirectPrintingReferenceObjectsService
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1120, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.DirPrintRefObjServ);
                }
            }

            /// <summary>
            /// Get Service Type for ESDP_UPNP_IP_LAP.
            /// </summary>
            public static ServiceType ESDP_UPNP_IP_LAP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1301, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.ESDPUPNPIPLAP);
                }
            }

            /// <summary>
            /// Get Service Type for ESDP_UPNP_IP_PAN.
            /// </summary>
            public static ServiceType ESDP_UPNP_IP_PAN
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1300, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.ESDPUPNPIPPAN);
                }
            }

            /// <summary>
            /// Get Service Type for ESDP_UPNP_L2CAP.
            /// </summary>
            public static ServiceType ESDP_UPNP_L2CAP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1302, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.ESDPUPNPL2CAP);
                }
            }

            /// <summary>
            /// Get Service Type for Fax.
            /// </summary>
            public static ServiceType Fax
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1111, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                    SDPMessages.Fax);
                }
            }

            /// <summary>
            /// Get Service Type for FTP.
            /// </summary>
            public static ServiceType FTP
            {
                get
                {
                    return new ServiceType(
                     new Guid(10, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.FTP);
                }
            }

            /// <summary>
            /// Get Service Type for GenericAudio.
            /// </summary>
            public static ServiceType GenericAudio
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1203, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.GenericAudio);
                }
            }

            /// <summary>
            /// Get Service Type for GenericFileTransfer.
            /// </summary>
            public static ServiceType GenericFileTransfer
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1202, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.GenericFileTransfer);
                }
            }

            /// <summary>
            /// Get Service Type for GenericNetworking.
            /// </summary>
            public static ServiceType GenericNetworking
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1201, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.GenericNetworking);
                }
            }

            /// <summary>
            /// Get Service Type for GenericTelephony.
            /// </summary>
            public static ServiceType GenericTelephony
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1204, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.GenericTelephony);
                }
            }

            /// <summary>
            /// Get Service Type for GN.
            /// </summary>
            public static ServiceType GN
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1117, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.GN);
                }
            }

            /// <summary>
            /// Get Service Type for Handsfree.
            /// </summary>
            public static ServiceType Handsfree
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x111e, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.Handsfree);
                }
            }

            /// <summary>
            /// Get Service Type for HandsfreeAudioGateway.
            /// </summary>
            public static ServiceType HandsfreeAudioGateway
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x111f, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HandsfreeAudioGateway);
                }
            }

            /// <summary>
            /// Get Service Type for HardcopyCableReplacement.
            /// </summary>
            public static ServiceType HardcopyCableReplacement
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1125, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HardcopyCableReplacement);
                }
            }

            /// <summary>
            /// Get Service Type for HardcopyControlChannel.
            /// </summary>
            public static ServiceType HardcopyControlChannel
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x12, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HardcopyControlChannel);
                }
            }

            /// <summary>
            /// Get Service Type for HardcopyDataChannel.
            /// </summary>
            public static ServiceType HardcopyDataChannel
            {
                get
                {
                    return new ServiceType(
                     new Guid(20, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HardcopyDataChannel);
                }
            }

            /// <summary>
            /// Get Service Type for HardcopyNotification.
            /// </summary>
            public static ServiceType HardcopyNotification
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x16, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                    SDPMessages.HardcopyNotification);
                }
            }

            /// <summary>
            /// Get Service Type for HCR_Print.
            /// </summary>
            public static ServiceType HCR_Print
            {
                get
                {
                    return new ServiceType(
                     new Guid( 0x1126, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HCRPrint);
                }
            }

            /// <summary>
            ///Get Service Type for Headset. 
            /// </summary>
            public static ServiceType Headset
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1108, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.Headset);
                }
            }

            /// <summary>
            /// Get Service Type for HeadsetAudioGateway.
            /// </summary>
            public static ServiceType HeadsetAudioGateway
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1112, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HeadsetAudioGateway);
                }
            }

            /// <summary>
            /// Get Service Type for HIDP.
            /// </summary>
            public static ServiceType HIDP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x11, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HIDP);
                }
            }

            /// <summary>
            /// Get Service Type for HTTP.
            /// </summary>
            public static ServiceType HTTP
            {
                get
                {
                    return new ServiceType(
                     new Guid(12, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HTTP);
                }
            }

            /// <summary>
            /// Get Service Type for HumanInterfaceDeviceService.
            /// </summary>
            public static ServiceType HumanInterfaceDeviceService
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1124, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.HIDS);
                }
            }

            /// <summary>
            /// Get Service Type for Imaging.
            /// </summary>
            public static ServiceType Imaging
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x111a, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.Imaging);
                }
            }

            /// <summary>
            /// Get Service Type for ImagingReferencedObjects.
            /// </summary>
            public static ServiceType ImagingReferencedObjects
            {
                get
                {
                    return new ServiceType(
                     new Guid( 0x111d, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.IRO);
                }
            }

            /// <summary>
            /// Get Service Type for ImagingResponder.
            /// </summary>
            public static ServiceType ImagingResponder
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x111b, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.IR);
                }
            }

            /// <summary>
            /// Get Service Type for Intercom.
            /// </summary>
            public static ServiceType Intercom
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1110, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.Intercom);
                }
            }

            /// <summary>
            /// Get Service Type for IP.
            /// </summary>
            public static ServiceType IP
            {
                get
                {
                    return new ServiceType(
                     new Guid( 9, 0,0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.IP);
                }
            }

            /// <summary>
            /// Get Service Type for IrMCSync.
            /// </summary>
            public static ServiceType IrMCSync
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1104,0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.IrMCSync);
                }
            }

            /// <summary>
            /// Get Service Type for IrMCSyncCommand.
            /// </summary>
            public static ServiceType IrMCSyncCommand
            {
                get
                {
                    return new ServiceType(
                     new Guid( 0x1107,0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                    SDPMessages.IrMCSyncCommand);
                }
            }

            /// <summary>
            /// Get Service Type for L2CAP.
            /// </summary>
            public static ServiceType L2CAP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x100,0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.L2CAP);
                }
            }

            /// <summary>
            /// Get Service Type for LANAccessUsingPPP.
            /// </summary>
            public static ServiceType LANAccessUsingPPP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1102, 0,0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.LANAccess);
                }
            }

            /// <summary>
            /// Get Service Type for NAP.
            /// </summary>
            public static ServiceType NAP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1116,0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.NAP);
                }
            }

            /// <summary>
            /// Get Service Type for OBEX.
            /// </summary>
            public static ServiceType OBEX
            {
                get
                {
                    return new ServiceType(
                     new Guid( 8,0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.ObjectExchange);
                }
            }

            /// <summary>
            /// Get Service Type for OBEXFileTransfer.
            /// </summary>
            public static ServiceType OBEXFileTransfer
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1106, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.OBEXFileTransfer);
                }
            }

            /// <summary>
            /// Get Service Type for OBEXObjectPush.
            /// </summary>
            public static ServiceType OBEXObjectPush
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1105,0,0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.OBEXObjectPush);
                }
            }

            /// <summary>
            /// Get Service Type for PANU.
            /// </summary>
            public static ServiceType PANU
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1115, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.PANO);
                }
            }

            /// <summary>
            /// Get Service Type for Phonebook_Access_PCE.
            /// </summary>
            public static ServiceType Phonebook_Access_PCE
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x112e, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.PhonebookAccessPCE);
                }
            }

            /// <summary>
            /// Get Service Type for Phonebook_Access_PSE.
            /// </summary>
            public static ServiceType Phonebook_Access_PSE
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x112f, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.PhonebookAccessPSE);
                }
            }

            /// <summary>
            /// Get Service Type for PnPInformation.
            /// </summary>
            public static ServiceType PnPInformation
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1200, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                    SDPMessages.PnPInformation);
                }
            }

            /// <summary>
            /// Get Service Type for PrintingStatus.
            /// </summary>
            public static ServiceType PrintingStatus
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1123, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.PrintingStatus);
                }
            }

            /// <summary>
            /// Get Service Type for PublicBrowseGroup.
            /// </summary>
            public static ServiceType PublicBrowseGroup
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1002, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.PublicBrowseGroup);
                }
            }

            /// <summary>
            /// Get Service Type for ReferencePrinting.
            /// </summary>
            public static ServiceType ReferencePrinting
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1119, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.ReferencePrinting);
                }
            }

            /// <summary>
            /// Get Service Type for ReflectedUI.
            /// </summary>
            public static ServiceType ReflectedUI
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1121, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.ReflectedUI);
                }
            }

            /// <summary>
            /// Get Service Type for RFCOMM.
            /// </summary>
            public static ServiceType RFCOMM
            {
                get
                {
                    return new ServiceType(
                     new Guid(3, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.RFCOMM);
                }
            }

            /// <summary>
            /// Get Service Type for SDP.
            /// </summary>
            public static ServiceType SDP
            {
                get
                {
                    return new ServiceType(
                     new Guid(1, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.SDP);
                }
            }

            /// <summary>
            /// Get Service Type for SerialPortProfile.
            /// </summary>
            public static ServiceType SerialPortProfile
            {
                get
                {
                    return new ServiceType(                 
                     new Guid("00001101-0000-1000-8000-00805F9B34FB"),
                     SDPMessages.SerialPort);
                }
            }

            /// <summary>
            /// Get Service Type for ServiceDiscoveryServer.
            /// </summary>
            public static ServiceType ServiceDiscoveryServer
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1000, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.ServiceDiscoveryServer);
                }
            }

            /// <summary>
            /// Get Service Type for SIM_Access.
            /// </summary>
            public static ServiceType SIM_Access
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x112d, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.SIMAccess);
                }
            }

            /// <summary>
            /// Get Service Type for TCP.
            /// </summary>
            public static ServiceType TCP
            {
                get
                {
                    return new ServiceType(
                     new Guid(4, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.TCP);
                }
            }

            /// <summary>
            /// Get Service Type for TCS_AT.
            /// </summary>
            public static ServiceType TCS_AT
            {
                get
                {
                    return new ServiceType(
                     new Guid(6, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.TCSAT);
                }
            }

            /// <summary>
            /// Get Service Type for TCS_BIN.
            /// </summary>
            public static ServiceType TCS_BIN
            {
                get
                {
                    return new ServiceType(
                     new Guid(5, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.TCSBIN);
                }
            }

            /// <summary>
            /// Get Service Type for UDI_C_PLANE.
            /// </summary>
            public static ServiceType UDI_C_PLANE
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1d, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.UDICPLANE);
                }
            }

            /// <summary>
            /// Get Service Type for UDI_MT.
            /// </summary>
            public static ServiceType UDI_MT
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x112a, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.UDIMT);
                }
            }

            /// <summary>
            /// Get Service Type for UDI_TA.
            /// </summary>
            public static ServiceType UDI_TA
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x112b, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.UDITA);
                }
            }

            /// <summary>
            /// Get Service Type for UDP.
            /// </summary>
            public static ServiceType UDP
            {
                get
                {
                    return new ServiceType(
                     new Guid(2, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.UDP);
                }
            }

            /// <summary>
            /// Get Service Type for UPNP.
            /// </summary>
            public static ServiceType UPNP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x10, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.UPNP);
                }
            }

            /// <summary>
            /// Get Service Type for UPNP_IP_Service.
            /// </summary>
            public static ServiceType UPNP_IP_Service
            {
                get
                {
                    return new ServiceType(
                     new Guid( 0x1206, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.UPNPIPService);
                }
            }

            /// <summary>
            /// Get Service Type for UPNP_Service.
            /// </summary>
            public static ServiceType UPNP_Service
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1205, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.UPNPService);
                }
            }

            /// <summary>
            /// Get Service Type for VideoConferencing.
            /// </summary>
            public static ServiceType VideoConferencing
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x110f, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.VideoConferencing);
                }
            }

            /// <summary>
            /// Get Service Type for VideoConferencingGW.
            /// </summary>
            public static ServiceType VideoConferencingGW
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1129, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.VideoConferencingGW);
                }
            }

            /// <summary>
            /// Get Service Type for VideoDistribution.
            /// </summary>
            public static ServiceType VideoDistribution
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1305, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.VideoDistribution);
                }
            }

            /// <summary>
            /// Get Service Type for VideoSink.
            /// </summary>
            public static ServiceType VideoSink
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1304, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.VideoSink);
                }
            }

            /// <summary>
            /// Get Service Type for VideoSource.
            /// </summary>
            public static ServiceType VideoSource
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1303, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.VideoSource);
                }
            }

            /// <summary>
            /// Get Service Type for WAP.
            /// </summary>
            public static ServiceType WAP
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1113, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.WAP);
                }
            }

            /// <summary>
            /// Get Service Type for WAPClient.
            /// </summary>
            public static ServiceType WAPClient
            {
                get
                {
                    return new ServiceType(
                     new Guid(0x1114, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.WAPClient);
                }
            }

            /// <summary>
            /// Get Service Type for WSP.
            /// </summary>
            public static ServiceType WSP
            {
                get
                {
                    return new ServiceType(
                     new Guid(14, 0, 0x1000, 0x80, 0, 0, 0x80, 0x5f, 0x9b, 0x34, 0xfb),
                     SDPMessages.WSP);
                }
            }

            /// <summary>
            /// Get Service Type for UnknownProfile.
            /// </summary>
            public static ServiceType UnknownProfile
            {
                get
                {
                    return new ServiceType(
                     new Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
                     SDPMessages.UnknownProfile);
                }
            }
            #endregion

        }
    }
}